With recent advances in digital data transmission techniques and digital video compression, such as used in the MPEG-2 standard, it is possible to deliver several digitally compressed video programs in the same bandwidth presently occupied by a single analog television (TV) channel. These capabilities provide opportunities for programming service providers (e.g., broadcasters such as CNN, ABC), network operators (e.g., cable and satellite network owners), and end users.
In a multi-program transmission environment, several programs (e.g., channels) are coded, multiplexed and transmitted over a single communication channel. Since these programs share a limited channel capacity, the aggregate bit rate of the programs must be no greater than the communication channel rate. Accordingly, many video encoding applications utilize statistical remultiplexing techniques to combine several programs each comprising a compressed video bit stream into a single multiplexed bit stream, e.g., for transmission on a single channel. The bit rate of a given compressed stream generally varies with time based on the complexity of the corresponding video signals. A statistical re-multiplexer attempts to estimate the complexity of the various video frame sequences of a video signal and allocates channel bits among the corresponding compressed video bit streams so as to provide an approximately constant level of video quality across all of the multiplexed streams. For example, a given video frame sequence with a relatively large amount of spatial activity or motion may be more complex than other sequences and therefore allocated more bits than the other sequences.
A statistical re-multiplexer is one example of a rate shaping device that re-encodes individual encoded programs in such a way that the re-encoded programs or services do not collectively exceed the channel capacity bit rate. In a statistical remultiplexing system the bit rate of a multiplexed stream that includes multiple encoded video programs are adjusted so that the total bandwidth needed to transmit the multiplexed stream is maintained at a given level. A different bit rate may be assigned to each individual encoded program depending on a respective estimate of the number of bits needed by the video bit stream of the corresponding program to achieve the same level of quality as the other programs with which it is multiplexed. Accordingly, the methods employed to change the bit rate of the video stream are typically lossy and result in the modification of the originally encoded video data due to decoding and re-encoding operations.
FIG. 1 shows a conventional rate shaping device that is used to perform statistical remultiplexing. The rate shaping device 10 includes inverse variable length coding (VLC) module 30, inverse quantizer 40, forward quantizer 50 and forward VLC 70. In operation, the Inverse VLC 30 receives an encoded video stream such as an MPEG-2 video stream and applies inverse entropy coding such as inverse Huffman coding, for example, to the encoded video stream. The inverse VLC 30 performs variable length decoding, thereby separating the coded data into the motion vector, predictive mode, quantization step, and quantized coefficients at a macroblock level. The inverse quantizer 40 applies inverse quantization to decompress the macroblock coefficients such as discrete cosine transport (DCT) coefficients which are received from the inverse VLC 30. The forward quantizer 50 receives the uncompressed macroblock coefficients from the inverse quantizer 40 and applies a new quantization to the coefficients as specified by the new quantization level that is desired. This quantization process is not lossless and alters the original input video stream. The forward VLC 70 receives the requantized macroblock coefficients from the forward quantizer 50 and applies entropy coding (e.g., Huffman coding) to the video streams and outputs the final remultiplexed video stream.
Because statistical remultiplexing techniques are generally lossy, it may sometimes be desirable to preserve certain portions of a video stream that is to undergo statistical remultiplexing so that they are not altered by the statistical remultiplexer.